evtchn: reduce the size of the poll_mask where possible
authorAndrew Cooper <andrew.cooper3@citrix.com>
Thu, 22 Jan 2015 11:45:13 +0000 (12:45 +0100)
committerJan Beulich <jbeulich@suse.com>
Thu, 22 Jan 2015 11:45:13 +0000 (12:45 +0100)
Use domain_max_vcpus(d) in preference to MAX_VIRT_CPUS when allocating the
poll mask.  This allows x86 HVM guests to have a poll mask of 128 bits rather
than 8k bits.

While changing this, use xzalloc_array() in preference to xmalloc_array() to
avoid needing the subsequent call to bitmap_zero().

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
xen/common/event_channel.c

index c0fbcea7482f5c91398e85a2483072a8f3b8a380..4a52f69cebf6a5b7352be9e023810c88a0b17cb9 100644 (file)
@@ -1264,13 +1264,13 @@ int evtchn_init(struct domain *d)
     evtchn_from_port(d, 0)->state = ECS_RESERVED;
 
 #if MAX_VIRT_CPUS > BITS_PER_LONG
-    d->poll_mask = xmalloc_array(unsigned long, BITS_TO_LONGS(MAX_VIRT_CPUS));
+    d->poll_mask = xzalloc_array(unsigned long,
+                                 BITS_TO_LONGS(domain_max_vcpus(d)));
     if ( !d->poll_mask )
     {
         free_evtchn_bucket(d, d->evtchn);
         return -ENOMEM;
     }
-    bitmap_zero(d->poll_mask, MAX_VIRT_CPUS);
 #endif
 
     return 0;